package com.vita.core.put;

import com.vita.common.Entry;
import com.vita.core.task.CompTask;
import com.vita.core.task.Task;
import com.vita.core.task.TaskExecute;
import com.vita.excepsion.ConverterException;

/**
 * InOut （对象操作符）：
 * 输入输出会被放入一个Entry
 */
public class InOut<I,O> implements Task {
    private Entry<I,O> entry;

    public InOut(I i,O o) {
        this.entry = new Entry<I,O>(i, o);
    }

    @Override
    public void plan(TaskExecute execute) {
        execute.run(entry.getInput(), entry.getOutput());
    }

    @Override
    public InOut<I,O> oneStep(Task task) {
        if(task instanceof CompTask){
            task.oneStep(task);
        }else {
            throw new ConverterException("oneStep(Task task) 不支持SimpTask的传入，请使用CompTask");
        }
        return this;
    }
}
